#ifndef SIMPLE_BUZZER_H
#define SIMPLE_BUZZER_H

#include <Arduino.h>

/**
 * @brief 简单蜂鸣器控制类
 * 用于控制有源或无源蜂鸣器
 */
class SimpleBuzzer {
private:
    uint8_t _pin;           // 蜂鸣器引脚
    bool _isActive;         // 是否为有源蜂鸣器
    bool _state;            // 当前状态
    
public:
    /**
     * @brief 构造函数
     * @param pin 蜂鸣器引脚
     * @param isActive 是否为有源蜂鸣器 (默认为true)
     */
    SimpleBuzzer(uint8_t pin, bool isActive = true);
    
    /**
     * @brief 初始化蜂鸣器
     */
    void begin();
    
    /**
     * @brief 打开蜂鸣器
     */
    void on();
    
    /**
     * @brief 关闭蜂鸣器
     */
    void off();
    
    /**
     * @brief 蜂鸣器发出短暂的哔声
     * @param duration 持续时间（毫秒）
     */
    void beep(unsigned long duration = 100);
    
    /**
     * @brief 蜂鸣器发出多次哔声
     * @param times 次数
     * @param onDuration 每次开启持续时间（毫秒）
     * @param offDuration 每次关闭持续时间（毫秒）
     */
    void multiBeep(uint8_t times, unsigned long onDuration = 100, unsigned long offDuration = 100);
    
    /**
     * @brief 播放简单的音调序列
     * @param melody 音调频率数组
     * @param durations 每个音调持续时间数组
     * @param size 数组大小
     */
    void playMelody(int* melody, int* durations, int size);
};

#endif // SIMPLE_BUZZER_H 